//2025-4-21

//四位与非门
//先与后非

//时间尺度声明
`timescale 1ns/10ps

//模块定义
module nand_gate_4bits(A,B,Y); //括号里面是端口

//端口声明
    input[3:0] A;
    input[3:0] B;
    output[3:0] Y;

//逻辑实现
    assign  Y = ~(A&B);

endmodule


//测试模块
//testbench of nand_gate_4bits
module nand_gate_4bits_tb;
// 异名例化
// 异名例化就是给每个模块实例赋予唯一名字，
// 方便在顶层模块中对各实例进行单独引用、连接和调试。

//输入定义为reg型的变量
//要观察的变量定义为wire类型

reg[3:0] aa,bb; //此时aa和bb已经4位
wire[3:0] yy;

nand_gate_4bits nand_gate_4bits(.A(aa), .B(bb), .Y(yy));

initial begin
        aa <=4'b0000; bb <=4'b1111; //开始先让aa bb 为0  4'b0000表示4位
    #10 aa <=4'b0010; bb <=4'b0110;
    #10 aa <=4'b0111; bb <=4'b0100;
    #10 aa <=4'b0000; bb <=4'b1110;
    #10 $stop;
end

endmodule
